﻿#define _CRT_SECURE_NO_WARNINGS 1


//分段计算居民水费
//为鼓励居民节约用水，自来水公司采取按用水量阶梯式计价的办法，居民应交水费y（元）与月用水量x（吨）相关：
// 当x不超过15吨时，y=4x/3；超过后，y=2.5x−17.5。请编写程序实现水费的计算。
#include<stdio.h>
int main()
{
    float x = 0;
    scanf("%f", &x);
    float y = 0;
    if (x <= 15)
    {
        y = 4 * x / 3.0;
    }
    else
    {
        y = 2.5 * x - 17.5;
    }
    printf("%.2f", y);
}

//两个数的简单计算器
//本题要求编写一个简单计算器程序，可根据输入的运算符，对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。
#include<stdio.h>
int main()
{
    int a, b, n=0;
    char c;
    scanf("%d %c %d", &a, &c, &b);
    switch (c)
    {
    case '+':
        n = a + b;
        break;
    case '-':
        n = a - b;
        break;
    case '*':
        n = a * b;
        break;
    case '/':
        if (b != 0)
        {
            n = a / b;
            break;
        }
    case '%':
        if (b != 0)
        {
            n = a % b;
            break;
        }
    default:
        printf("ERROR\n");
        return 0;
    }

    printf("%d", n);
    return 0;
}

//日K蜡烛图
//
#include<stdio.h>
int main()
{
    float Open, High, Low, Close;
    scanf("%f%f%f%f", &Open, &High, &Low, &Close);
    if (Open > Close)
    {
        printf("BW-Solid");
    }
    else if (Open < Close)
    {
        printf("R-Hollow");
    }
    else if (Open == Close)
    {
        printf("R-Cross");
    }
    if (Low<Open && Low<Close && High>Open && High>Close)
    {
        printf(" with Lower Shadow and Upper Shadow");
    }
    else if (Low < Open && Low < Close)
    {
        printf(" with Lower Shadow");
    }
    else if (High > Open && High > Close)
    {
        printf(" with Upper Shadow");
    }
    return 0;
}

//求整数段和
#include<stdio.h>
int main()
{
    int a, b;
    scanf("%d %d", &a, &b);
    int sum = 0, count = 0;
    int i, j;
    for (i = a; i <= b; i++)
    {
        count++;
        printf("%5d", i);
        if (count % 5 == 0)
        {
            printf("\n");
            count = 0;
        }
        sum += i;
    }
    if (count != 0)
    {
        printf("\n");
    }
    printf("Sum = %d", sum);
    return 0;
}

// 计算圆周率
#include<stdio.h>
int main()
{
    double x, s = 1, i = 1, j = 1, z = 1;
    scanf("%lf", &x);
    for (i = 1; j / z >= x; i++)
    {
        z = z * (2 * i + 1);
        j *= i;
        s += j / z;
    }
    printf("%.6lf", s * 2);
}

// 求符合给定条件的整数集
//给定不超过6的正整数A，考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。
#include<stdio.h>
int main()
{
    int a, i, j, k;
    int count = 0;
    scanf("%d", &a);
    for (i = a; i < a + 4; i++)
    {
        for (j = a; j < a + 4; j++)
        {
            for (k = a; k < a + 4; k++)
            {
                if (i != j && i != k && j != k)
                {
                    count++;
                    printf("%d%d%d", i, j, k);
                    if (count % 6 == 0)
                    {
                        printf("\n");
                    }
                    else
                    {
                        printf(" ");
                    }
                }
            }
        }
    }
    return 0;
}

//爬动的蠕虫
//条蠕虫长1寸，在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸，但必须休息1分钟才能接着往上爬。
// 在休息的过程中，蠕虫又下滑了D寸。就这样，上爬和下滑重复进行。
// 请问，蠕虫需要多长时间才能爬出井？
#include<stdio.h>
int main()
{
    int n, d, u;
    scanf("%d%d%d", &n, &u, &d);
    int x = 0, t = 0;
    while (x < n)
    {
        x += u;
        t++;
        if (x < n)
        {
            x -= d;
            t++;
        }
    }
    printf("%d", t);
    return 0;
}

//二分法求多项式单根
#include<stdio.h>
double a3 = 0, a2 = 0, a1 = 0, a0 = 0;
double f(double x)
{
    double ret = a3 * x * x * x + a2 * x * x + a1 * x + a0;
    return ret;
}
int main()
{
    double a, b;
    scanf("%lf%lf%lf%lf", &a3, &a2, &a1, &a0);
    scanf("%lf%lf", &a, &b);
    double mid = 0;
    while (b - a >= 0.001 && f(a) * f(b) <= 0)
    {
        if (f(a) == 0)
        {
            mid = a;
            break;
        }
        else if (f(b) == 0)
        {
            mid = b;
            break;
        }
        mid = (a + b) / 2;
        if (f(mid) == 0)
        {
            break;
        }
        else
        {
            if (f(a) * f(mid) > 0)
            {
                a = mid;
            }

            if (f(b) * f(mid) > 0)
            {
                b = mid;
            }
        }
    }
    printf("%.2lf", mid);
    return 0;
}
//打印九九口诀表
#include<stdio.h>
int main()
{
    int i, j, n;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= i; j++)
        {
            printf("%d*%d=%-4d", j, i, j * i);
        }
        printf("\n");
    }
    return 0;
}

//支票面额
//一个采购员去银行兑换一张y元f分的支票，结果出纳员错给了f元y分。
// 采购员用去了n分之后才发觉有错，于是清点了余额尚有2y元2f分，问该支票面额是多少？
//输入在一行中给出小于100的正整数n。
#include<stdio.h>
int main()
{
    int y, f, n;
    scanf("%d", &n);
    for (y = 0; y < 100; y++)
    {
        for (f = 0; f < 100; f++)
        {
            if (100 * f + y - n == 200 * y + 2 * f)
            {
                printf("%d.%d", y, f);
                return 0;
            }
        }
    }
    printf("No Solution");
    return 0;
}

// 求特殊方程的正整数解
//本题要求对任意给定的正整数N，求方程X 
#include<stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    int x, y;
    int flag = 0;
    for (x = 0; x < 100; x++)
    {
        for (y = x; y < 100; y++)
        {
            if (x * x + y * y == n)
            {
                printf("%d %d\n", x, y);
                flag = 1;
            }
        }
    }
    if (flag == 0)
    {
        printf("No Solution");
    }
    return 0;
} 